package org.example.managere.service;

import java.util.List;
import java.util.Map;

/**
 * DFCM数据库通用服务接口
 * 用于处理dfcmdata数据库中的通用表操作
 */
public interface DfcmDataService {
    
    /**
     * 获取数据库中所有表名
     * 
     * @return 表名列表
     */
    List<String> getAllTables();
    
    /**
     * 获取表的所有列名和数据类型
     * 
     * @param tableName 表名
     * @return 列名和数据类型的映射
     */
    Map<String, String> getTableColumns(String tableName);
    
    /**
     * 分页查询表数据
     * 
     * @param tableName 表名
     * @param page 页码（从0开始）
     * @param size 每页大小
     * @param sortField 排序字段（可选）
     * @param sortDirection 排序方向（asc或desc，可选）
     * @param keyword 搜索关键词（可选）
     * @return 表数据和分页信息
     */
    Map<String, Object> getTableData(String tableName, int page, int size, 
                                    String sortField, String sortDirection, String keyword);
    
    /**
     * 根据主键获取记录
     * 
     * @param tableName 表名
     * @param primaryKeyName 主键列名
     * @param primaryKeyValue 主键值
     * @return 记录数据
     */
    Map<String, Object> getRecordByPrimaryKey(String tableName, String primaryKeyName, Object primaryKeyValue);
    
    /**
     * 获取表的主键列名（如果有）
     * 
     * @param tableName 表名
     * @return 主键列名，如果没有则返回null
     */
    String getPrimaryKeyColumn(String tableName);
    
    /**
     * 获取表中记录总数
     * 
     * @param tableName 表名
     * @param keyword 搜索关键词（可选）
     * @return 记录总数
     */
    long getTableCount(String tableName, String keyword);
} 